package p1290

import node.ListNode

/**
 * <pre>
 * 方法一：直接遍历，此种方法相当于反向操作，
 * 与十进制的链表转换成十进制数同理，
 * 用（res * 10 + head.val）就可以恢复成十进制数，不信 你拿笔模拟一下~
 *
 * 方法二，由于左移相当于乘以2，所以将方法一的乘以2替换成左移操作即可
 *
 * </pre>
 */
class UnfoldStragty : Stragty {
    override fun getDecimalValue(head: ListNode?): Int {
        var tempt: ListNode? = head
        var sum: Int = 0
        //110
        //2*0+1
        //(2*0+1)*2+1
        //((2*0+1)*2+1)*2+0
        //2*0*2*2 + 1*2*2 + 1*2 + 0
        while (tempt != null) {
            sum = sum * 2 + tempt.`val`
            System.out.println("${tempt.`val`} == ${sum}")
            tempt = tempt.next
        }
        return sum
    }
}